Personalized fonts

ABSTRACT

Methods and system for creating and managing personalized fonts. Personalized fonts are created by applying personalization parameters to a base font using a style application method or module such as a neural style transformation. The personalized fonts may be transferred to recipients of textual communications to enable the recipient to read messages from a sender in the personalized font of the sender.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims priority to U.S. Provisional Application Ser.No. 62/904,114 entitled PERSONALIZED FONTS, filed on Sep. 23, 2019, thecontents of which are incorporated fully herein by reference.

TECHNICAL FIELD

The present subject matter relates to electronic devices and, moreparticularly, to creating and using fonts that are personalized toenhance communications using electronic devices.

BACKGROUND

Textual communication is a common means of communication between usersof electronic devices (e.g., texting). Textual communication isconventionally performed using standardized computer fonts. A computerfont (or font) is typically implemented as a digital data filecontaining a set of graphically related glyphs, characters, or symbols.

BRIEF DESCRIPTION OF THE DRAWINGS

The drawing figures depict one or more implementations, by way ofexample only, not by way of limitations. In the figures, like referencenumerals refer to the same or similar elements.

FIG. 1 is a block diagram illustrating a system configured to create anduse personalized fonts;

FIG. 2 is a block diagram illustrating communication with personalizedfonts;

FIG. 3 is a block diagram illustrating a personalized font creationengine for creating personalized fonts;

FIG. 4 is a block diagram illustrating a personalized font managementengine for use in communicating with personalized fonts;

FIG. 5A is an illustration of an example base font used in the creatingof a personalized font;

FIG. 5B is an illustration of an example representing a personalizedfont;

FIGS. 6A, 6B, 6C, and 6D are representative examples of characterfeatures within a personalized font;

FIG. 7A is a flow diagram illustrating example steps for creatingpersonalized fonts;

FIG. 7B is a flow diagram illustrating example steps for managingcommunications with personalized fonts;

FIG. 8 is a high-level functional block diagram of an example clientdevice comprising a mobile device that communicates via network withserver system;

FIG. 9 is a diagrammatic representation of a machine in the form of acomputer system within which a set of instructions may be executed forcausing the machine to perform any one or more of the methodologiesdiscussed herein, in accordance with some examples; and

FIG. 10 is block diagram showing a software architecture within whichthe present disclosure may be implemented, in accordance with examples.

DETAILED DESCRIPTION

One aspect of the present disclosure describes creation and use ofpersonalized fonts. Deep learning techniques automatically createpersonalized fonts for use in, for example, the “chat” section of amobile device application. This enables each user to chat with his/herpersonalized font, which is unique to the user, e.g., to provide a moreengaging user experience.

The description that follows includes systems, methods, techniques,instruction sequences, and computing machine program productsillustrative of examples of the disclosure. In the followingdescription, for the purposes of explanation, numerous specific detailsare set forth in order to provide an understanding of various examplesof the disclosed subject matter. It will be evident, however, to thoseskilled in the art, that examples of the disclosed subject matter may bepracticed without these specific details. In general, well-knowninstruction instances, protocols, structures, and techniques are notnecessarily shown in detail.

FIG. 1 is a block diagram illustrating a system 100, according to someexamples, configured to crate and use personalized fonts. The system 100includes one or more client devices such as client device 110. Theclient device 110 includes, but is not limited to, a mobile phone,desktop computer, laptop, portable digital assistants (PDA), smartphone, tablet, ultrabook, netbook, laptop, multi-processor system,microprocessor-based or programmable consumer electronic, game console,set-top box, computer in a vehicle, or any other communication devicethat a user may utilize to access the system 100. In some examples, theclient device 110 includes a display module (not shown) to displayinformation (e.g., in the form of user interfaces). In further examples,the client device 110 includes one or more of touch screens,accelerometers, gyroscopes, cameras, microphones, global positioningsystem (GPS) devices, and so forth. The client device 110 may be adevice of a user that is used to access and utilize an online socialplatform.

For example, client device 110 is a device of a given user who uses anapplication 114 on an online social platform, a gaming platform, andcommunication applications. Client device 110 accesses a website, suchas an online social platform hosted by a server system 108. The userinputs login credentials associated with the user. Server system 108receives the request and provides access to the online social platform.

A user of the client device 110 launches and engages an application 114hosted by the server system 108. The client device 110 includes one ormore personalized font modules 116 including a processor running clientcode for performing the creation and/or use of personalized fonts on theclient device 110.

One or more users may be a person, a machine, or other means ofinteracting with the client device 110. In examples, the user may not bepart of the system 100 but may interact with the system 100 via theclient device 110 or other means. For instance, the user may provideinput (e.g., touch screen input, alphanumeric input, verbal input, orvisual input) to the client device 110 and the input may be communicatedto other entities in the system 100 (e.g., third-party servers 128,server system 108, etc.) via a network 102 (e.g., the Internet). In thisinstance, the other entities in the system 100, in response to receivingthe input from the user, may communicate information to the clientdevice 110 via the network 102 to be presented to the user. In this way,the user interacts with the various entities in the system 100 using theclient device 110.

One or more portions of the network 102 may be an ad hoc network, anintranet, an extranet, a virtual private network (VPN), a local areanetwork (LAN), a wireless LAN (WLAN), a wide area network (WAN), awireless WAN (WWAN), a metropolitan area network (MAN), a portion of theInternet, a portion of the public switched telephone network (PSTN), acellular telephone network, a wireless network, a WiFi network, a 4G LTEnetwork, another type of network, or a combination of two or more suchnetworks.

The client device 110 may access the various data and applicationsprovided by other entities in the system 100 via a web client 112 (e.g.,a browser) or one or more client applications 114. The client device 110may include one or more client application(s) 114 (also referred to as“apps”) such as, but not limited to, a web browser, messagingapplication, multi-player gaming application, electronic mail (email)application, an e-commerce site application, a mapping or locationapplication, and the like.

In some examples, one or more client application(s) 114 are included ina given one of the client device 110, and configured to locally providethe user interface and at least some of the functionalities, with theclient application(s) 114 configured to communicate with other entitiesin the system 100 (e.g., third-party server(s) 128, server system 108,etc.), on an as-needed basis, for data processing capabilities notlocally available (e.g., to access location information, to authenticatea user, etc.). Conversely, one or more client application(s) 114 may notbe included in the client device 110, and then the client device 110 mayuse its web browser to access the one or more applications hosted onother entities in the system 100 (e.g., third-party server(s) 128,server system 108, etc.).

The server system 108 provides server-side functionality via the network102 (e.g., the Internet or wide area network (WAN)) to: one or morethird party server(s) 128, and one or more client devices 110. Theserver system 108 includes an application server 104 including anapplication program interface (API) server 120, a web server 122, andone or more personalized font modules 124, that may be communicativelycoupled with one or more database(s) 126. The one or more database(s)126 may be storage devices that store data related to users of theserver system 108, applications associated with the server system 108,cloud services, and so forth. The one or more database(s) 126 mayfurther store information related to third-party server(s) 128,third-party application(s) 130, client device 110, client application(s)114, users, and so forth. In one example, the one or more database(s)126 may be cloud-based storage.

The server system 108 may be a cloud computing environment, according tosome examples. The server system 108, and any servers associated withthe server system 108, may be associated with a cloud-based application,in one example.

The one or more client device personalized font modules 116 and the oneor more application personalized font modules 124 are stored on thedevice 110 and/or server 108 to optimize processing efficiency. In someexamples, all modules for performing a specific task such as creating afont are stored on the device/server performing that action. In otherexamples, some modules for performing a task are stored on the device110 and other modules for performing that task are stored on the server108 and/or other devices. In some examples, modules may be duplicated onthe device 110 and the server 108.

The one or more third-party application(s) 130, executing on third-partyserver(s) 128 may interact with the server system 108 via API server 120via a programmatic interface provided by the API server 120. Forexample, one or more of the third-party applications 130 may request andutilize information from the server system 108 via the API server 120 tosupport one or more features or functions on a website hosted by thethird party or an application hosted by the third party. The third-partyapplication(s) 130, for example, may provide software version analysisfunctionality that is supported by relevant functionality and data inthe server system 108.

FIG. 2 provides an overview of one example for communicating usingpersonalized fonts among a plurality of user device 110 a-n. The mobiledevices 110 in FIG. 2 each include a respective screen 200 a-n. On arespective screen, text origination at the mobile device 110 is depictedadjacent the right edge of the screen 200 and text received from anotherdevice 110 is depicted adjacent the left edge of the screen 200. Thesever system 108 coordinates communication among the device 110 view thenetwork 102.

The user of device 110 a first creates a personalized font (such as thefont used to depict “Hello” 202 on screen 200 a; e.g., font 550; FIG. 5b) and the user of device 110 b creates another personalized font (suchas the font used to depict “Hi” on screen 200 b). The user of device 110a sends the textual message “Hello” 202 to users of other devices 110b-n. The other devices 110 b-n display the textual message “Hello” 202in the personalized font of the user of device 110 a. The user of device110 b responds with the textual message “Hi!” 204 to users of otherdevices 110 a and c-n. The other devices 110 a and c-n display thetextual message “Hi!” 204 in the personalized font of the user of device110 b. Thus, each user of a device 110 may have their own personalizefont for textual communication.

FIG. 3 depicts a personalized font creation engine 300. Personalizedfont creation engine 300 includes a personalization parameter(s) module302, a font template module 304, a style application module 306 (e.g., amodule implementing a Neural Style Transfer algorithm; NST), and apersonalized font storage module 308. Upon execution (e.g., by aprocessor(s) within the device 110 and/or server 108), the modules ofthe engine 300 enable a user to create a personalized font and to storethe personalize for later usage.

The personalization parameter(s) module 302 gathers one or morepersonalization parameters for and/or associated with a user for use increating a personalized font. The personalization parameters may beselected by a user or may be automatically determined by the device.Personalization parameters may include one or more of an image orcollection of images (e.g., of a favorite painting(s), a favoritepicture(s), a most viewed image by the client device 110, a picture ofan existing font, a Bitmoji®, etc.), or other parameter that isassociated with the user.

The font template module 304 identifies a font template for adaptationto create a personalized font. In one example, the font template moduleincludes a single base font such as font 500 (including multiplecharacters 502 a-n; FIG. 5A). In another example, the font templatemodule 304 includes a plurality of base fonts, which it presents forselection by a user. In yet another example, font template module 304solicits base font information from a user. For example, the fonttemplate module may receive an image including one or more characters ofan existing font from the user, which the module processes to extractfont characteristic features of the one or more characters. The modulemay then generate the obtained font from the extracted fontcharacteristic features.

The style application module 306 creates a personalize font based on thepersonalization parameter(s) and the font template. The font templatemodule creates a personalized font, which is represented by font 550(including multiple characters 552 a-n; FIG. 5A)—a simplisticrepresentation for description purposes.

In one example, the style application module 306 feeds the base font(e.g., font 550; FIG. 5A) though a convolutional neural network (CNN),and network activations are sampled within the neural networkarchitecture at a late stage to obtain “content.” The personalizationparameter(s) are then fed through the same CNN, and network activationsare sampled within the neural network architecture at an earlier stage(e.g., an early to mid stage). The style application module 306 thenencodes activations for the personalization parameter(s) into a matrixrepresentation (e.g., a Gramian matrix representation) to obtain a“style.” The style application module 306 then applies an iterativeoptimization (e.g., gradient descent) using the samples and activationsto synthesize a personalized output font that exhibits the content ofthe base font applied with the style of the personalizationparameter(s). Other techniques for creating a personalized font usingNST will by understood by one of skill in the art from the descriptionherein.

The personalized font storage module 308 stores the personalized font(e.g., in the device 110 and/or the server 108) for later use.Personalized font storage module may create a bitmap font or a vectorfont. In one example, the font is stored in a color font file, which isa conventional computer font file that embeds additional data to displaymore graphic properties than the contour shapes of a character. Thecolor fonts may be stored as scalable vector graphics (SVG) data insideOpenType font files, which may contain vector shapes with color orgradients, and may also include bitmap images. Color fonts based onvector glyphs can be resized without any loss, just like any regularfont. Color bitmap fonts, like any other photo or pixel-based image,will scale properly up to a certain size, depending on their originalresolution. The lettering beyond that resolution may look pixelated.Additionally, pixilation may occur if an image used for personalizationis much smaller than the font.

FIG. 4 depicts a personalized font management engine 300. Personalizedfont management engine 400 includes a personalized font selection module402, a personalized font distribution module 404, a personalized fontretrieval module 406, and a personalized font display module 408. Uponexecution (e.g., by a processor(s) within the device 110 and/or server108), the modules of the engine 400 enable textual communication usingpersonalized fonts.

Personalized font selection module 402 selects a personalized font fortextual communication. In one example, the personalized font selectionmodule 402 presents a plurality of fonts including one or morepersonalized fonts to a user upon request for manual selection by theuser. In another example, the personalized font selection module 402automatically selects a personalized font responsive to a prior defaultidentification by the user.

Personalized font distribution model 404 distributes personalized fontfiles. In an example, the personalized font distribution model 404monitors a device 110 (e.g., a source device) to identifying otherdevices 110 to which textual communications are being or will be sent.The personalized distribution model 404 may identify an intendedrecipient(s) of a text message or may identify, for example, contactsidentified as “friends” in a social media application. The personalizeddistribution model 404 may send a font file including the personalizedfont to the intended recipients (e.g., for storage and cache andsubsequent use when a message is received from a device of a usercorresponding to the personalized font).

Personalized font retrieval module 406 retrieves personalized fonts fordisplaying textual communications from a device of a user correspondingto the personalized font. In an example, personalized font retrievalmodule 406 monitors source formation of incoming textual communications(e.g., based on user identification (ID)) and compares the sourceinformation to a database including personalized fonts for users toidentify a match. If a match is identified, the personalized fontretrieval module retrieves the personalized font corresponding to theidentified match.

Personalized font display module 408 displays textual communications inthe personalized font of the sender on the device of the recipient. Thepersonalized font display module 408 may display textual communicationson a display 200 for a device 110 such as depicted in FIG. 2.

FIG. 5A depicts a font 500 representing a base font for use in creatinga personalized font. The font 500 includes a plurality of characters 502a-n. Although only capital letters are depicted, it is to be understoodthat the characters may include one or more of capital letters, smallletter, special characters, symbols, icons, emoji, etc.

FIG. 5B depicts a font 550 representing a personalized font created byapplying personalization parameters to the base font. The personalizedfont 550 includes a plurality of characters 552 a-n. Although onlycapital letters are depicted, it is to be understood that the charactersmay include one or more of capital letters, small letter, specialcharacters, symbols, icons, emoji, etc. Each personalized font includesone or more attributes, which may include by way of non-limiting exampletypeface, point size, weight, color, rotation, texture, design, etc.

FIGS. 6A-6D depict representative examples of features incorporated intoa personalized font. In FIG. 6A, the character 600 is a rotatedcharacter. The character 600 is depicted with coordinate lines 602 tofacilitate identification of the attribute. In FIG. 6B, the character604 is an enlarged character. In FIG. 6C, the character 606 is ahorizontally lengthened and narrowed.

In FIG. 6D, the character 608 includes multiple features. The character608 including a rounded addition 610 and an angular addition 612. In theillustrated example, the character 608 includes a first colored portion614 a and a second colored portion 614 b extending over a portion of thecharacter. Each colored portion 614 may be, for example, a Bitmoji® of auser. In another example, a single colored portion 614 a may extend overthe entire character.

FIG. 7 depicts flow chart 700 illustrating example steps for creating apersonalized font and FIG. 7B depicts a flow chart 750 illustratingexample steps for managing personalized fonts for textualcommunications. The steps are described with reference to hardwaredescribed herein, but are not to be limited to such implementations.Although shown as occurring serially, the blocks of FIGS. 7A and 7B maybe reordered or parallelized depending on the implementation.Furthermore, one of skill in the art will understand from thedescription herein that one or more steps/blocks may be omitted and oneor more additional/alternative steps may be incorporated.

At block 702, obtain a font template. The font template module 304 mayobtain the font template from a database stored in memory at the device110 or the server 108.

At block 704, receive personalization parameters. The personalizationparameter module 302 may receive the personalization parameterselections from a user via a user input device such as a touch screen toidentify the personalization parameters.

At block 706, create a personalized font through style transfer from animage. The style application module 306 may create the personalized fontby applying the personalization parameters to the obtained fonttemplate.

At block 708, store the personalized font. The personalized font storagemodule 308 may store the personalized font in memory of the clientdevice 110 and/or the server 108.

Referring now to flow chart 750 of FIG. 7B, at block 752, receive apersonalized font request. The personalized font selection module 402may receive the personalized font request from a user via a user inputdevice such as a touch screen or a microphone.

At block 754, identify targets. The personalized font distributionmodule 404 may identify the targets. The personalized font distributionmodule 404 may, for example, monitor a communication application toidentify intended recipients of messages or may monitor a social mediaapplication to identify “friends” of the user who will likely be targetsof future textual communications.

At block 756, share personalized font file with the targets. Thepersonalized font distribution module 404 at the device of the sendermay share the personalized font files with the targets directly orthrough a cloud server, for example.

At block 758, store font files at the targets. The personalized fontdistribution module 404 at the device of the target/recipient may storethe personalized font files, e.g., in cache for fast retrieval whendisplaying messages from a sender in a personalized font associated withthe sender.

At block 760, send messages to the target. A communication applicationmay send messages to the target. The message may include a user IDidentifying the sender of the message.

At block 764, display messages at the target in the personalized font ofthe sender. The personalized font display module 408 may display themessages at the target in the personalized font of the sender, e.g., bycomparing the user ID to a list of user IDs for which personalized fontshave been received and retrieving the personalized font associated withthe user ID when a match is identified. The retrieved personalized fontcan then be used to display the message.

FIG. 8 is a high-level functional block diagram of an example clientdevice 110 including a mobile device that communicates via network 102with server system 108 of FIG. 9. Shown are elements of a touch screentype mobile device 890, although other non-touch type mobile devices canbe used. Examples of touch screen type mobile devices that may be usedinclude (but are not limited to) a smart phone, a personal digitalassistant (PDA), a tablet computer, a laptop computer, or other portabledevice. However, the structure and operation of the touch screen typedevices is provided by way of example, and the subject technology asdescribed herein is not intended to be limited thereto. For purposes ofthis discussion, FIG. 8 therefore provides a block diagram illustrationof the example mobile device 110 having a touch screen display fordisplaying content and receiving user input as (or as part of) the userinterface. Mobile device 890 also includes a camera(s) 870, such asvisible light camera(s), and a microphone 880.

The activities that are the focus of discussions here involve creatingand managing personalized fonts. The personalized font creating engine300 may be stored in memory 840 for execution by CPU 830 to createpersonalized fonts. The personalized font management engine 400 may bestored in memory 840 for execution by CPU 830 to manage personalizedfonts.

As shown in FIG. 8, the mobile device 110 includes at least one digitaltransceiver (XCVR) 810, shown as WWAN XCVRs, for digital wirelesscommunications via a wide area wireless mobile communication network102. The mobile device 110 also includes additional digital or analogtransceivers, such as short range XCVRs 820 for short-range networkcommunication, such as via NFC, VLC, DECT, ZigBee, Bluetooth™, or WiFi.For example, short range XCVRs 820 may take the form of any availabletwo-way wireless local area network (WLAN) transceiver of a type that iscompatible with one or more standard protocols of communicationimplemented in wireless local area networks, such as one of the Wi-Fistandards under IEEE 802.11 and 4G LTE.

To generate location coordinates for positioning of the mobile device890, the mobile device 890 can include a global positioning system (GPS)receiver (not shown). Alternatively, or additionally, the mobile device110 can utilize either or both the short range XCVRs 820 and WWAN XCVRs810 for generating location coordinates for positioning. For example,cellular network, WiFi, or Bluetooth™ based positioning systems cangenerate very accurate location coordinates, particularly when used incombination. Such location coordinates can be transmitted to the eyeweardevice over one or more network connections via XCVRs 820.

The transceivers 810, 820 (network communication interface) conforms toone or more of the various digital wireless communication standardsutilized by modern mobile networks. Examples of WWAN transceivers 810include (but are not limited to) transceivers configured to operate inaccordance with Code Division Multiple Access (CDMA) and 3rd GenerationPartnership Project (3GPP) network technologies including, for exampleand without limitation, 3GPP type 2 (or 3GPP2) and LTE, at timesreferred to as “4G.” For example, the transceivers 810, 820 providetwo-way wireless communication of information including digitized audiosignals, still image and video signals, web page information for displayas well as web related inputs, and various types of mobile messagecommunications to/from the mobile device 110 for user identificationstrategies.

Several of these types of communications through the transceivers 810,820 and a network, as discussed previously, relate to protocols andprocedures in support of communications with the server system 108 forobtaining and storing friend device capabilities. Such communications,for example, may transport packet data via the short range XCVRs 820over the wireless connections of network 102 to and from the serversystem 108 as shown in FIG. 1. Such communications, for example, mayalso transport data utilizing IP packet data transport via the WWANXCVRs 810 over the network (e.g., Internet) 102 shown in FIG. 1. BothWWAN XCVRs 810 and short range XCVRs 820 connect through radio frequency(RF) send-and-receive amplifiers (not shown) to an associated antenna(not shown).

The mobile device 110 further includes a microprocessor 830, shown as aCPU, sometimes referred to herein as the host controller. A processor isa circuit having elements structured and arranged to perform one or moreprocessing functions, typically various data processing functions.Although discrete logic components could be used, the examples utilizecomponents forming a programmable CPU. A microprocessor for exampleincludes one or more integrated circuit (IC) chips incorporating theelectronic elements to perform the functions of the CPU. The processor830, for example, may be based on any known or available microprocessorarchitecture, such as a Reduced Instruction Set Computing (RISC) usingan ARM architecture, as commonly used today in mobile devices and otherportable electronic devices. Other processor circuitry may be used toform the CPU 830 or processor hardware in smartphone, laptop computer,and tablet.

The microprocessor 830 serves as a programmable host controller for themobile device 110 by configuring the mobile device to perform variousoperations, for example, in accordance with instructions or programmingexecutable by processor 830. For example, such operations may includevarious general operations of the mobile device, as well as operationsrelated to performance metric monitoring, personalized fonts, reportingto server system 108, and gating. Although a processor may be configuredby use of hardwired logic, typical processors in mobile devices aregeneral processing circuits configured by execution of programming.

The mobile device 110 includes a memory or storage device system, forstoring data and programming. In the example, the memory system mayinclude a flash memory 840A and a random access memory (RAM) 840B. TheRAM 840B serves as short term storage for instructions and data beinghandled by the processor 830, e.g., as a working data processing memory.The flash memory 840A typically provides longer term storage. Flashmemory 840A and/or RAM 840B may include personalized font cache 845 forstoring personalized fonts.

Hence, in the example of mobile device 110, the flash memory 840A isused to store programming or instructions for execution by the processor830. Depending on the type of device, the mobile device 110 stores andruns a mobile operating system through which specific applications,including application 114. Examples of mobile operating systems includeGoogle Android®, Apple iOS® (I-Phone or iPad devices), Windows Mobile®,Amazon Fire OS®, RIM BlackBerry® operating system, or the like.

FIG. 9 is a diagrammatic representation of a machine 900 within whichinstructions 908 (e.g., software, a program, an application, an applet,an app, or other executable code) for causing the machine 900 to performany one or more of the methodologies discussed herein may be executed.For example, the instructions 908 may cause the machine 900 to executeany one or more of the methods described herein. The instructions 908transform the general, non-programmed machine 900 into a particularmachine 900 programmed to carry out the described and illustratedfunctions in the manner described. The machine 900 may operate as astandalone device or may be coupled (e.g., networked) to other machines.In a networked deployment, the machine 900 may operate in the capacityof a server machine or a client machine in a server-client networkenvironment, or as a peer machine in a peer-to-peer (or distributed)network environment. The machine 900 may comprise, but not be limitedto, a server computer, a client computer, a personal computer (PC), atablet computer, a laptop computer, a netbook, a set-top box (STB), aPDA, an entertainment media system, a cellular telephone, a smart phone,a mobile device, a wearable device (e.g., a smart watch), a smart homedevice (e.g., a smart appliance), other smart devices, a web appliance,a network router, a network switch, a network bridge, or any machinecapable of executing the instructions 908, sequentially or otherwise,that specify actions to be taken by the machine 900. Further, while onlya single machine 900 is illustrated, the term “machine” shall also betaken to include a collection of machines that individually or jointlyexecute the instructions 908 to perform any one or more of themethodologies discussed herein.

The machine 900 may include processors 902, memory 904, and I/Ocomponents 942, which may be configured to communicate with each othervia a bus 944. In an example, the processors 902 (e.g., a CentralProcessing Unit (CPU), a Reduced Instruction Set Computing (RISC)processor, a Complex Instruction Set Computing (CISC) processor, aGraphics Processing Unit (GPU), a Digital Signal Processor (DSP), anASIC, a Radio-Frequency Integrated Circuit (RFIC), another processor, orany suitable combination thereof) may include, for example, a processor906 and a processor 910 that execute the instructions 908. The term“processor” is intended to include multi-core processors that maycomprise two or more independent processors (sometimes referred to as“cores”) that may execute instructions contemporaneously. Although FIG.9 shows multiple processors 902, the machine 900 may include a singleprocessor with a single core, a single processor with multiple cores(e.g., a multi-core processor), multiple processors with a single core,multiple processors with multiples cores, or any combination thereof.

The memory 904 includes a main memory 912, a static memory 914, and astorage unit 916, both accessible to the processors 902 via the bus 944.The main memory 904, the static memory 914, and storage unit 916 storethe instructions 908 embodying any one or more of the methodologies orfunctions described herein. The instructions 908 may also reside,completely or partially, within the main memory 912, within the staticmemory 914, within machine-readable medium 918 (e.g., a non-transitorymachine-readable storage medium) within the storage unit 916, within atleast one of the processors 902 (e.g., within the processor's cachememory), or any suitable combination thereof, during execution thereofby the machine 900.

Furthermore, the machine-readable medium 918 is non-transitory (in otherwords, not having any transitory signals) in that it does not embody apropagating signal. However, labeling the machine-readable medium 918“non-transitory” should not be construed to mean that the medium isincapable of movement; the medium should be considered as beingtransportable from one physical location to another. Additionally, sincethe machine-readable medium 918 is tangible, the medium may be amachine-readable device.

The I/O components 942 may include a wide variety of components toreceive input, provide output, produce output, transmit information,exchange information, capture measurements, and so on. The specific I/Ocomponents 942 that are included in a particular machine will depend onthe type of machine. For example, portable machines such as mobilephones may include a touch input device or other such input mechanisms,while a headless server machine will likely not include such a touchinput device. It will be appreciated that the I/O components 942 mayinclude many other components that are not shown in FIG. 9. In variousexamples, the I/O components 942 may include output components 928 andinput components 930. The output components 928 may include visualcomponents (e.g., a display such as a plasma display panel (PDP), alight emitting diode (LED) display, a liquid crystal display (LCD), aprojector, or a cathode ray tube (CRT)), acoustic components (e.g.,speakers), haptic components (e.g., a vibratory motor, resistancemechanisms), other signal generators, and so forth. The input components930 may include alphanumeric input components (e.g., a keyboard, a touchscreen configured to receive alphanumeric input, a photo-opticalkeyboard, or other alphanumeric input components), point-based inputcomponents (e.g., a mouse, a touchpad, a trackball, a joystick, a motionsensor, or another pointing instrument), tactile input components (e.g.,a physical button, a touch screen that provides location, force oftouches or touch gestures, or other tactile input components), audioinput components (e.g., a microphone), and the like.

In further examples, the I/O components 942 may include biometriccomponents 932, motion components 934, environmental components 936, orposition components 938, among a wide array of other components. Forexample, the biometric components 932 include components to detectexpressions (e.g., hand expressions, facial expressions, vocalexpressions, body gestures, or eye tracking), measure biosignals (e.g.,blood pressure, heart rate, body temperature, perspiration, or brainwaves), identify a person (e.g., voice identification, retinalidentification, facial identification, fingerprint identification, orelectroencephalogram-based identification), and the like. The motioncomponents 934 include acceleration sensor components (e.g.,accelerometer), gravitation sensor components, rotation sensorcomponents (e.g., gyroscope), and so forth. The environmental components936 include, for example, illumination sensor components (e.g.,photometer), temperature sensor components (e.g., one or morethermometers that detect ambient temperature), humidity sensorcomponents, pressure sensor components (e.g., barometer), acousticsensor components (e.g., one or more microphones that detect backgroundnoise), proximity sensor components (e.g., infrared sensors that detectnearby objects), gas sensors (e.g., gas detection sensors to detectionconcentrations of hazardous gases for safety or to measure pollutants inthe atmosphere), or other components that may provide indications,measurements, or signals corresponding to a surrounding physicalenvironment. The position components 938 include location sensorcomponents (e.g., a GPS receiver component), altitude sensor components(e.g., altimeters or barometers that detect air pressure from whichaltitude may be derived), orientation sensor components (e.g.,magnetometers), and the like.

Communication may be implemented using a wide variety of technologies.The I/O components 942 further include communication components 940operable to couple the machine 900 to network 102 and client devices 110via a coupling 924 and a coupling 926, respectively. For example, thecommunication components 940 may include a network interface componentor another suitable device to interface with the network 102. In furtherexamples, the communication components 940 may include wiredcommunication components, wireless communication components, cellularcommunication components, Near Field Communication (NFC) components,Bluetooth® components (e.g., Bluetooth® Low Energy), WiFi® components,and other communication components to provide communication via othermodalities. The devices 922 may be another machine or any of a widevariety of peripheral devices (e.g., a peripheral device coupled via aUSB).

Moreover, the communication components 940 may detect identifiers orinclude components operable to detect identifiers. For example, thecommunication components 940 may include Radio Frequency Identification(RFID) tag reader components, NFC smart tag detection components,optical reader components (e.g., an optical sensor to detectone-dimensional bar codes such as Universal Product Code (UPC) bar code,multi-dimensional bar codes such as Quick Response (QR) code, Azteccode, Data Matrix, Dataglyph, MaxiCode, PDF417, Ultra Code, UCC RSS-2Dbar code, and other optical codes), or acoustic detection components(e.g., microphones to identify tagged audio signals). In addition, avariety of information may be derived via the communication components940, such as location via Internet Protocol (IP) geolocation, locationvia Wi-Fi® signal triangulation, location via detecting an NFC beaconsignal that may indicate a particular location, and so forth.

The various memories (e.g., memory 904, main memory 912, static memory914, memory of the processors 902), storage unit 916 may store one ormore sets of instructions and data structures (e.g., software) embodyingor used by any one or more of the methodologies or functions describedherein. These instructions (e.g., the instructions 908), when executedby processors 902, cause various operations to implement the disclosedexamples.

The instructions 908 may be transmitted or received over the network102, using a transmission medium, via a network interface device (e.g.,a network interface component included in the communication components940) and using any one of a number of well-known transfer protocols(e.g., hypertext transfer protocol (HTTP)). Similarly, the instructions908 may be transmitted or received using a transmission medium via thecoupling 926 (e.g., a peer-to-peer coupling) to the devices 922.

FIG. 10 is a block diagram 1000 illustrating a software architecture1004, which can be installed on any one or more of the devices describedherein. The software architecture 1004 is supported by hardware such asa machine 1002 that includes processors 1020, memory 1026, and I/Ocomponents 1038. In this example, the software architecture 1004 can beconceptualized as a stack of layers, where each layer provides aparticular functionality. The software architecture 1004 includes layerssuch as an operating system 1012, libraries 1010, frameworks 1008, andapplications 1006. Operationally, the applications 1006 invoke API calls1050 through the software stack and receive messages 1052 in response tothe API calls 1050.

The operating system 1012 manages hardware resources and provides commonservices. The operating system 1012 includes, for example, a kernel1014, services 1016, and drivers 1022. The kernel 1014 acts as anabstraction layer between the hardware and the other software layers.For example, the kernel 1014 provides memory management, processormanagement (e.g., scheduling), component management, networking, andsecurity settings, among other functionality. The services 1016 canprovide other common services for the other software layers. The drivers1022 are responsible for controlling or interfacing with the underlyinghardware. For instance, the drivers 1022 can include display drivers,camera drivers, BLUETOOTH® or BLUETOOTH® Low Energy drivers, flashmemory drivers, serial communication drivers (e.g., Universal Serial Bus(USB) drivers), WI-FI® drivers, audio drivers, power management drivers,and so forth.

The libraries 1010 provide a low-level common infrastructure used by theapplications 1006. The libraries 1010 can include system libraries 1018(e.g., C standard library) that provide functions such as memoryallocation functions, string manipulation functions, mathematicfunctions, and the like. In addition, the libraries 1010 can include APIlibraries 1024 such as media libraries (e.g., libraries to supportpresentation and manipulation of various media formats such as MovingPicture Experts Group-4 (MPEG4), Advanced Video Coding (H.264 or AVC),Moving Picture Experts Group Layer-3 (MP3), Advanced Audio Coding (AAC),Adaptive Multi-Rate (AMR) audio codec, Joint Photographic Experts Group(JPEG or JPG), or Portable Network Graphics (PNG)), graphics libraries(e.g., an OpenGL framework used to render in two dimensions (2D) andthree dimensions (3D) in a graphic content on a display), databaselibraries (e.g., SQLite to provide various relational databasefunctions), web libraries (e.g., WebKit to provide web browsingfunctionality), and the like. The libraries 1010 can also include a widevariety of other libraries 1028 to provide many other APIs to theapplications 1006.

The frameworks 1008 provide a high-level common infrastructure that isused by the applications 1006. For example, the frameworks 1008 providevarious graphical user interface (GUI) functions, high-level resourcemanagement, and high-level location services. The frameworks 1008 canprovide a broad spectrum of other APIs that can be used by theapplications 1006, some of which may be specific to a particularoperating system or platform.

In an example, the applications 1006 may include a home application1036, a contacts application 1030, a browser application 1032, a bookreader application 1034, a location application 1042, a mediaapplication 1044, a messaging application 1046, a game application 1048,and a broad assortment of other applications such as a third-partyapplication 1040. The applications 1006 are programs that executefunctions defined in the programs. Various programming languages can beemployed to create one or more of the applications 1006, structured in avariety of manners, such as object-oriented programming languages (e.g.,Objective-C, Java, or C++) or procedural programming languages (e.g., Cor assembly language). In a specific example, the third-partyapplication 1040 (e.g., an application developed using the ANDROID™ orIOS™ software development kit (SDK) by an entity other than the vendorof the particular platform) may be mobile software running on a mobileoperating system such as IOS™, ANDROID™, WINDOWS® Phone, or anothermobile operating system. In this example, the third-party application1040 can invoke the API calls 1050 provided by the operating system 1012to facilitate functionality described herein.

The terms and expressions used herein are understood to have theordinary meaning as is accorded to such terms and expressions withrespect to their corresponding respective areas of inquiry and studyexcept where specific meanings have otherwise been set forth herein.Relational terms such as first and second and the like may be usedsolely to distinguish one entity or action from another withoutnecessarily requiring or implying any actual such relationship or orderbetween such entities or actions. The terms “comprises,” “comprising,”“includes,” “including,” or any other variation thereof, are intended tocover a non-exclusive inclusion, such that a process, method, article,or apparatus that comprises or includes a list of elements or steps doesnot include only those elements or steps but may include other elementsor steps not expressly listed or inherent to such process, method,article, or apparatus. An element preceded by “a” or “an” does not,without further constraints, preclude the existence of additionalidentical elements in the process, method, article, or apparatus thatcomprises the element.

In addition, in the foregoing Detailed Description, it can be seen thatvarious features are grouped together in various examples for thepurpose of streamlining the disclosure. This method of disclosure is notto be interpreted as reflecting an intention that the claimed examplesrequire more features than are expressly recited in each claim. Rather,as the following claims reflect, the subject matter to be protected liesin less than all features of any single disclosed example. Thus, thefollowing claims are hereby incorporated into the Detailed Description,with each claim standing on its own as a separately claimed subjectmatter.

The examples illustrated herein are described in sufficient detail toenable those skilled in the art to practice the teachings disclosed.Other examples may be used and derived therefrom, such that structuraland logical substitutions and changes may be made without departing fromthe scope of this disclosure. The Detailed Description, therefore, isnot to be taken in a limiting sense, and the scope of various examplesis defined only by the appended claims, along with the full range ofequivalents to which such claims are entitled.

Additional objects, advantages and novel features of the examples willbe set forth in part in the description which follows, and in part willbecome apparent to those skilled in the art upon examination of thefollowing and the accompanying drawings or may be learned by productionor operation of the examples. The objects and advantages of the presentsubject matter may be realized and attained by means of themethodologies, instrumentalities and combinations particularly pointedout in the appended claims.

What is claimed is:
 1. A personalized font system, the system comprising: a user interface configured to receive instructions from a user; a personalized font creation engine comprising a style application module; a memory; a processor coupled to the memory; and instructions stored in the memory that, when executed by the processor, configure the processor to; obtain a font template; receive at least one personalization parameter for a user; and applying, by the personalized font creation engine, the at least one personalization parameter to the font template using the style application module to create a personalized font for the user; and storing the personalized font in the memory.
 2. The system of claim 1, wherein the instructions stored in the memory, when executed by the processor, further configure the processor to: identifying at least one target device for a text message from the user; sharing the personalized font with the at least one target device; and sending the text message from the user to the at least one target device for display by the at least one target device in the personalized font of the user.
 3. The system of claim 2, further comprising a target device including a cache, a second processor, and a display, wherein the second processor is configured to: store the personalized font in cache of the at least one target device; receive the text message from the user at the least one target device; retrieve the personalized font from the cache of the at least one target device in response to receiving the text message; and display the text message on the display of the at least one target device in the personalized font of the user.
 4. The system of claim 1, wherein, to obtain the font template, the instructions configure the processor to: present a plurality of fonts to a user; receive a selection of one of the plurality of fonts; designate the selected one of the plurality of fonts as the obtained font in response to the selection.
 5. The system of claim 1, wherein, to obtain the font template, the instructions configure the processor to: receive an image including one or more characters of an existing font; process the image to extract font characteristic features of the one or more characters; and generate the font template such that all characters of the font template have a similar style as the one or more characters.
 6. The system of claim 1, wherein the at least one personalization parameter is an image selected by the user.
 7. The system of claim 6, wherein the user selects the image using a mobile device having a camera and the instructions further configure the processor to: capture the image with the camera of the mobile device.
 8. The system of claim 1, wherein the style application module is a Neural Style Transfer (NST) module.
 9. A personalized font method, the method comprising: obtaining a font template; receiving at least one personalization parameter for a user; and applying the at least one personalization parameter to the font template using a style transfer method to create a personalized font for the user; and storing the personalized font.
 10. The method of claim 9, further comprising: identifying at least one target device for a text message from the user; sharing the personalized font with the at least one target device; and sending the text message from the user to the at least one target device for display by the at least one target device in the personalized font of the user.
 11. The method of claim 10, further comprising: storing the personalized font in cache of the at least one target device; receiving the text message from the user at the least one target device; retrieving the personalized font from the cache of the at least one target device in response to receiving the text message; and displaying the text message by the at least one target device in the personalized font of the user.
 12. The method of claim 9, wherein the font is obtained by: presenting a plurality of fonts to a user; receiving a selection of one of the plurality of fonts; designating the selected one of the plurality of fonts as the obtained font in response to the selection.
 13. The method of claim 9, wherein the font is obtained by: receiving an image including one or more characters of an existing font; processing the image to extract font characteristic features of the one or more characters; and generating the font template such that all characters of the font template have a similar style as the one or more characters.
 14. The method of claim 9, wherein the at least one personalization parameter is an image selected by the user.
 15. The method of claim 14, wherein the user selects the image using a mobile device having a camera and the method further comprises: capturing the image with the camera of the mobile device.
 16. The method of claim 9, wherein the style application method is a Neural Style Transfer (NST) method.
 17. A non-transitory computer-readable medium storing program code which, when executed, is operative to cause an electronic processor to perform the steps of: obtaining a font template; receiving at least one personalization parameter for a user; and applying the at least one personalization parameter to the font template using a style application to create a personalized font for the user; and storing the personalized font.
 18. The non-transitory computer-readable medium of claim 17, wherein the program code, when executed, is operative to cause the processor to further perform the steps of: identifying at least one target device for a text message from the user; sharing the personalized font with the at least one target device; and sending the text message from the user to the at least one target device for display by the at least one target device in the personalized font of the user.
 19. The non-transitory computer-readable medium of claim 17, wherein the program code, when executed, is operative to cause the processor to further perform the steps of: presenting a plurality of fonts to a user; receiving a selection of one of the plurality of fonts; designating the selected one of the plurality of fonts as the obtained font in response to the selection.
 20. The non-transitory computer-readable medium of claim 17, wherein the style application method is a Neural Style Transfer (NST) method. 